package com.bpmn.system.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import lombok.Data;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * API Key 数据模型
 *
 * @author bpmn
 */
@Data
@TableName(value = "sys_api_key_data", autoResultMap = true)
public class SysApiKeyDataModel {

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 标题
     */
    private String title;

    /**
     * 简介
     */
    private String intro;

    /**
     * API Key
     */
    @TableField("api_key")
    private String apiKey;

    /**
     * 登录ID
     */
    @TableField("login_id")
    private String loginId;

    /**
     * 创建时间
     */
    @TableField("create_time")
    private long createTime = System.currentTimeMillis();

    /**
     * 过期时间
     */
    @TableField("expires_time")
    private long expiresTime;

    /**
     * 是否有效
     */
    @TableField("is_valid")
    private Boolean isValid = true;

    /**
     * 权限范围
     */
    @TableField(value = "scopes", typeHandler = JacksonTypeHandler.class)
    private List<String> scopes = new ArrayList<>();

    /**
     * 额外数据
     */
    @TableField(value = "extra_data", typeHandler = JacksonTypeHandler.class)
    private Map<String, Object> extraData;
}